package dbaccess;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.Date;

public class SocofWebGet {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) throws SQLException {
        // TODO code application logic here

        String tabelaFxCriar = "FICHEIROS";
        String colunasFxCriar = "\"ID\" INTEGER not null "
                + "PRIMARY KEY GENERATED ALWAYS AS IDENTITY "
                + "(START WITH 1, INCREMENT BY 1), "
                + "\"DOMINIO\" VARCHAR(100), "
                + "\"FICHEIRO\" VARCHAR(100), "
                + "\"ESTADO\" VARCHAR(30), "
                + "\"TAMANHOSITE\" INTEGER, "
                + "\"CAMINHOSITE\" VARCHAR(250) not null, UNIQUE(\"CAMINHOSITE\"),"
                + "\"CAMINHOLOCAL\" VARCHAR(250)not null, UNIQUE(\"CAMINHOLOCAL\"),"
                + "\"TIPO\" VARCHAR(30), "
                + "\"NIVEIS\" INTEGER, "
                + "\"ACTUALIZADO\" date";

//    String tabelaTipoCriar = "TIPO";
//    String colunasTipoCriar = "\"ID\" INTEGER not null "+
//            "PRIMARY KEY GENERATED ALWAYS AS IDENTITY "+
//            "(START WITH 1, INCREMENT BY 1), "+
//    "\"TIPO\" VARCHAR(100)";

        String tabelaEstadoCriar = "ESTADO";
        String colunasEstadoCriar = "\"ID\" INTEGER not null "
                + "PRIMARY KEY GENERATED ALWAYS AS IDENTITY "
                + "(START WITH 1, INCREMENT BY 1), "
                + "\"ESTADO\" VARCHAR(100)";

        System.out.println("Agora ler :http://oreilly.com/catalog/javadata/chapter/ch04.html#footnote-1");
        Coleccao listagemBD = new Coleccao();


// ----  Teste ligacao Cliente Servidor - INICIO
//        System.out.println("Vamos agora testar o Cliente-Servidor------INICIO");
//            //Inicializa
//        DBClienteServidor clienteServidor1 = new DBClienteServidor();
//            //Arranca
//        clienteServidor1.init();
//            // Cria ligacao e mostra algo
//        clienteServidor1.connection();
//            // Desliga
//        clienteServidor1.shutdown();
//
//        System.out.println("Vamos agora testar o Cliente-Servidor------FIM");
//        try {
//            Thread.sleep(2000);
//        } catch (InterruptedException ex) {
//            Logger.getLogger(SocofWebGet.class.getName()).log(Level.SEVERE, null, ex);
//        }
//

// ----  Teste ligacao Embededd - INICIO
        System.out.println("Vamos agora testar o EMBEDEDD");
        DBAccess ligacao2 = new DBAccess();
        ligacao2.init();

        ligacao2.connection();
        ligacao2.sqlSelect("SELECT FICHEIRO, ESTADO from \"FICHEIROS\"");
        ligacao2.deleteTable("ficheiros");
        ligacao2.deleteTable("tipo");
        ligacao2.deleteTable("estado");
        ligacao2.sqlSelect("SELECT FICHEIRO, ESTADO from \"FICHEIROS\"");

//        ligacao2.createTable(tabelaTipoCriar, colunasTipoCriar);
        ligacao2.createTable(tabelaEstadoCriar, colunasEstadoCriar);
        ligacao2.createTable(tabelaFxCriar, colunasFxCriar);

//ligacao2.sqlAlter("ALTER TABLE SOCOF.\"FICHEIROS\" add column \"DOMINIO\" VARCHAR(100);");
//        ligacao2.sqlSelect("SELECT FICHEIRO, ESTADO from \"FICHEIROS\"");
//            try {
//        Thread.sleep(1000);
//    } catch (InterruptedException ex) {
//        Logger.getLogger(SocofWebGet.class.getName()).log(Level.SEVERE, null, ex);
//    }
//            System.out.println("Vamos agora fazer um select");
        //ligacao2.sqlSelect("SELECT FICHEIRO, ESTADO from SOCOF.\"FICHEIROS\"");

        Ficheiro ficheiro1 = new Ficheiro();
        Ficheiro ficheiro2 = new Ficheiro();
        Ficheiro ficheiro3 = new Ficheiro();
        Ficheiro ficheiro4 = new Ficheiro();
        Ficheiro ficheiro5 = new Ficheiro();
        Ficheiro ficheiro6 = new Ficheiro();

        Date data1 = new Date();
        Date data2 = new Date();
        Date data3 = new Date();
        Date data4 = new Date();
        Date data5 = new Date();
        Date data6 = new Date();

        ficheiro1.setDominio("www.fx1.com");
        ficheiro1.setFicheiro("fx1.jpg");
        ficheiro1.setEstado("completo");
        ficheiro1.setTamanhosite(1003);
        ficheiro1.setCaminhosite("http://www.fx1.com/nivel/fx1.jpg");
        ficheiro1.setCaminholocal("/home/socof/descarga/www.fx1.com/nivel/fx1.jpg");
        ficheiro1.setTipo("texto");
        ficheiro1.setNiveis(2);
        ficheiro1.setActualizado(data1);

        ficheiro2.setDominio("www.fx2.com");
        ficheiro2.setFicheiro("fx2.jpg");
        ficheiro2.setEstado("incompleto");
        ficheiro2.setTamanhosite(1012);
        ficheiro2.setCaminhosite("http://www.fx2.com/nivel/nivel/fx2.jpg");
        ficheiro2.setCaminholocal("/home/socof/descarga/www.fx2.com/nivel/nivel/fx2.jpg");
        ficheiro2.setTipo("texto");
        ficheiro2.setNiveis(3);
        ficheiro2.setActualizado(data2);

        ficheiro3.setId(1);
        ficheiro3.setDominio("www.fx1.com");
        ficheiro3.setFicheiro("fx1.jpg");
        ficheiro3.setEstado("completo");
        ficheiro3.setTamanhosite(1003);
        ficheiro3.setCaminhosite("http://www.fx1.com/nivel/fx1.jpg");
        ficheiro3.setCaminholocal("/home/socof/descarga/www.fx1.com/nivel/fx1.jpg");
        ficheiro3.setTipo("binario");
        ficheiro3.setNiveis(2);
        ficheiro3.setActualizado(data3);

        ficheiro4.setDominio("www.fx2.com");
        ficheiro4.setFicheiro("fx4.jpg");
        ficheiro4.setEstado("completo");
        ficheiro4.setTamanhosite(1004);
        ficheiro4.setCaminhosite("http://www.fx2.com/nivel/nivel/fx4.jpg");
        ficheiro4.setCaminholocal("/home/socof/descarga/www.fx2.com/nivel/nivel/fx4.jpg");
        ficheiro4.setTipo("texto");
        ficheiro4.setNiveis(3);
        ficheiro4.setActualizado(data4);

        ficheiro5.setDominio("www.fx2.com");
        ficheiro5.setFicheiro("fx5.jpg");
        ficheiro5.setEstado("completo");
        ficheiro5.setTamanhosite(1005);
        ficheiro5.setCaminhosite("http://www.fx2.com/nivel/nivel/fx5.jpg");
        ficheiro5.setCaminholocal("/home/socof/descarga/www.fx2.com/nivel/nivel/fx5.jpg");
        ficheiro5.setTipo("texto");
        ficheiro5.setNiveis(3);
        ficheiro5.setActualizado(data5);

        ficheiro6.setDominio("www.fx2.com");
        ficheiro6.setFicheiro("fx6.jpg");
        ficheiro6.setEstado("completo");
        ficheiro6.setTamanhosite(1006);
        ficheiro6.setCaminhosite("http://www.fx2.com/nivel/nivel/fx6.jpg");
        ficheiro6.setCaminholocal("/home/socof/descarga/www.fx2.com/nivel/nivel/fx6.jpg");
        ficheiro6.setTipo("texto");
        ficheiro6.setNiveis(3);
        ficheiro6.setActualizado(data6);

//        ligacao2.writeData(ficheiro1);
//        ligacao2.writeData(ficheiro2);
//        ligacao2.writeData(ficheiro3);
//        ligacao2.writeData(ficheiro4);
//        ligacao2.writeData(ficheiro5);
//        ligacao2.writeData(ficheiro6);

        listagemBD.writeData(ficheiro1);
        listagemBD.writeData(ficheiro2);
        listagemBD.writeData(ficheiro3);
        listagemBD.writeData(ficheiro4);
        listagemBD.writeData(ficheiro5);
        listagemBD.writeData(ficheiro6);

        try {
            Thread.sleep(2000);
        } catch (InterruptedException ex) {
            Logger.getLogger(SocofWebGet.class.getName()).log(Level.SEVERE, null, ex);
        }

        System.out.println("Vamos testar tudo por dominio");
        ArrayList<Ficheiro> listaObtida = new ArrayList<Ficheiro>();
        // OK // listaObtida = listagemBD.getListaTodosFXDominio("www.fx2.com");
        // OK // listaObtida = listagemBD.getListaCompletos("www.fx2.com");
        // OK // listaObtida = listagemBD.getListaIncompletos("www.fx2.com");
        listaObtida = listagemBD.getListaDominioPorEstado("www.fx2.com", "completo");
        //DEBUG
        for (Ficheiro fx : listaObtida) {
            System.out.println("A lista tem tamanho: " + listaObtida.size());
            System.out.println(fx.toString());
        }



//        ligacao2.sqlSelect("SELECT FICHEIRO, ESTADO from SOCOF.\"FICHEIROS\"");
        try {
            Thread.sleep(1000);
        } catch (InterruptedException ex) {
            Logger.getLogger(SocofWebGet.class.getName()).log(Level.SEVERE, null, ex);
        }




        // Quando sai, desliga a Base de dados
        ligacao2.shutdown();
    }
}
